package com.cn.wanxi.cy02.servlet;

public class Person {
    //    类包含：块，属性，方法，构造函数
//    1.属性：就是用来描述对象的特点
//    姓名：性别：长相：地址
    private String name;//私有
    public String address;//公有
    protected int age;//受保护
    String sex;//默认不写，和default完全无关
    //    name,address,age,sex   标识符
//    标识符：如果是Java自己定义的词伙子字叫做关键字
//    如果是自己（开发人员，其他人员）写的就叫做标识符，变量名，方法名，类名，常量名
//    一个完整的变量属性命名
//    权限修饰符  特征修饰符  变量类型  变量名称  赋值符号=  变量值 结束；
    public static String userName = "rains";
    private static final String ageA = "18";
    //    权限修饰符:public  private  protected  默认不写
//    特征修饰符：static  final   native
//    变量类型：引用类型,基本类型（八大），基本类型的包装类  类
//    public Dog dog;
//    变量名称：遵循命名规则：第一：不能用关键字。第二：见名知意；第三：类名，大驼峰，变量名，方法名，小驼峰，常量，大写
//    赋值符号：=
    public static final String A1 = "18";//static 静态的，当我们想共享一个变量的时候就用
    //    final 最终的，不可改变的
//    static 静态的，公用
    //    完整的属性描述，那些可以不要
//    第一：权限修饰符
    static final int a2 = 9;
    //    第二：特征修饰符可以不要
    int a3 = 9;
    //    第三：变量类型必须要
//    第四：变量名必须要
//    第五：赋值符号可以不要；
    int a4;//默认值是0；熟悉：八大基本类型默认值，还有包装类的默认值，还有引用类的默认值
    byte aByte;//0
    short aShort;//0
    long aLong;//0
    float aFloat;//0.0
    double aDouble;//0.0
    boolean aBoolean;//false
    char aChar;//空 " "

    //    八大基本类型包装类的默认值都为null，因为包装类属于，类的默认值均为null
//    第六：可以不用赋值
//-------------------------------------------------------------------------------------
//   第二大快：方法
//    方法用来表述对象的行为
//    权限修饰符  特征修饰符 返回值类型  方法名称 （参数类型  参数名称....）throws  异常
//{
//    方法体
//    返回值
//}
    {
        System.out.println("普通方法块一");
    }
//对于我们方法来说，也有几个可以不要的
//    第一:权限修饰符  可以不要
//    第二:特征修饰符  可以不要
//    第三:返回值类型
//    第四:方法名
//    第五:参数  可以不要
//    第六:抛出异常  可以不要
//    第七:方法体 可以不要
//    第八:返回值 可以不要，void  不用返回
//    第九：可以全部不要：这种情况下就是类的第三部分：方法块


    //    第三部分：方法块
//    静态方法块
    static {
        System.out.println("静态方法块");
    }

    //    普通方法块
    {
        System.out.println("普通方法块二");
    }

    //    类里面：方法块执行顺序按照书写顺序执行，如果有静态方法块，先执行静态，然后在执行普通方法块
//    Java类第四块：构造函数
//构造函数，用来创建对象化实例
//    第一：默认构造函数，可以不写
//    直接是public + 类名 (){}
//    每一个类都有一个默认的构造函数
    private Person() {
        System.out.println("私有的构造方法");
    }

    //    public  提供别人调用的接口
//    如果我们需要调用这个类，再写一个
    public Person(String name) {
        System.out.println("有一个参数的构造方法");

    }
//    这里又说明一个问题：方法块始终在调用构造函数之前执行

    //    重载：我们接触的第一个重载，用得最多的
//    方法重载的意思：方法名相同，参数个数不同，或者参数类型不同，或者参数顺序不同
    public Person(String name, String age) {
        System.out.println("有一个参数的构造方法");
    }
//一个类里面包括：属性，方法，方法块，构造函数
//    引用了几个知识点：
//    1.八大基本类型默认值
//    2.权限修饰符
//    3.方法重载
//    4.类的加载顺序

//    继承：子类可以引用父类，除了private的都可以引用，子类可以有自己特有的方法或者属性

}
